package main

import "fmt"

/**
赋值
1、常见赋值
2、元组赋值：是另一种赋值语句，允许同时更新多个变量的值。
           赋值前赋值语句右边的表达式将会先进行求值，然后再统一更新左边对应变量的值。
3、赋值性
	3.1）赋值语句是显示的赋值形式
	3.2）隐式赋值：函数调用会隐式的将调用参数的值赋值给函数的参数变量，一个返回语句会隐式的将返回操作的值赋值给结果变量。
	3.3) 赋值的规则：左右两边的蕾西必须完全匹配
	3.4）nil可以赋值给任何指针或引用类型的变量
*/

func main() {
	// 元组赋值
	//i, j, k = 2, 3, 4
	//fmt.Println(i)
	num := fib(10)
	fmt.Println(num)

	// 隐式赋值
	// 切片
	medals := []string{"gold", "silver", "bronze"}
	fmt.Println(medals[0], medals[1], medals[2])
}
func gcd(x, y int) int {
	for y != 0 {
		x, y = y, x%y
	}
	return x
}

// 计算斐波那契数列的第N个数
func fib(n int) int {
	x, y := 0, 1
	for i := 0; i < n; i++ {
		x, y = y, x+y
	}
	return x
}
